const { autoLogin, getToken } = require('./utils/user.js')

App({
  globalData: {
    userInfo: null,
    isLoggedIn: false,
    currentVersion: '1.0.2',  // 当前应用版本号 - 可以在发布时自动更新
    platform: 'android',      // 平台类型：android/ios/all
    apiBaseUrl: 'http://localhost:8123', // 替换为实际的API域名
    updateInfo: null // 存储从服务器获取的更新信息
  },

  onLaunch() {
    // 初始化事件中心
    if (!wx.eventCenter) {
      wx.eventCenter = {
        listeners: {},
        emit(event, data) {
          if (this.listeners[event]) {
            this.listeners[event].forEach(callback => callback(data))
          }
        },
        on(event, callback) {
          if (!this.listeners[event]) {
            this.listeners[event] = []
          }
          this.listeners[event].push(callback)
        },
        off(event, callback) {
          if (this.listeners[event]) {
            if (callback) {
              const index = this.listeners[event].indexOf(callback)
              if (index !== -1) {
                this.listeners[event].splice(index, 1)
              }
            } else {
              this.listeners[event] = []
            }
          }
        }
      }
    }

    // 检查登录状态
    const userInfo = wx.getStorageSync('userInfo')
    
    if (userInfo) {
      this.globalData.userInfo = userInfo
      this.globalData.isLoggedIn = true
    }

    // 检查更新
    this.checkUpdate();
  },

  async checkLoginStatus() {
    const userInfo = wx.getStorageSync('userInfo')
    
    if (userInfo) {
      // 如果已经有用户信息，说明已经登录
      this.globalData.userInfo = userInfo
      this.globalData.isLoggedIn = true
      return true
    }
    return false
  },
   // 检查更新
   checkUpdate: function() {
    const that = this;
    wx.request({
      url: getApiUrl('/version'),
      method: 'GET',
      data: {
        currentVersion: that.globalData.currentVersion,
        platform: that.globalData.platform
      },
      success: function(res) {
        if (res.statusCode === 200 && res.data.code === 200) {
          const updateInfoList = res.data.data;
          
          // 如果有可用更新
          if (updateInfoList && updateInfoList.length > 0) {
            // 取最新的一个版本
            const updateInfo = updateInfoList[0];
            
            // 存储更新信息
            that.globalData.updateInfo = updateInfo;
            
            // 如果是强制更新
            if (updateInfo.forceUpdate) {
              that.showForceUpdateDialog(updateInfo);
            } else {
              // 否则在适当的时机提示用户有更新
              wx.setStorageSync('hasNewVersion', true);
            }
          }
        }
      },
      fail: function(err) {
        console.error('检查更新失败:', err);
      }
    });
  },
  // 显示强制更新对话框
  showForceUpdateDialog: function(updateInfo) {
    wx.showModal({
      title: '版本更新',
      content: `发现新版本 ${updateInfo.version}，需要立即更新才能继续使用。\n\n更新内容：\n${updateInfo.description}`,
      showCancel: false,
      confirmText: '立即更新',
      success: function(res) {
        if (res.confirm) {
          wx.navigateTo({
            url: '/pages/update/update'
          });
        }
      }
    });
  },
  
  // 显示普通更新提示
  showUpdateTip: function() {
    const updateInfo = this.globalData.updateInfo;
    if (!updateInfo) return;
    
    wx.showModal({
      title: '发现新版本',
      content: `新版本 ${updateInfo.version} 已发布\n\n更新内容：\n${updateInfo.description}`,
      cancelText: '稍后再说',
      confirmText: '立即更新',
      success: function(res) {
        if (res.confirm) {
          wx.navigateTo({
            url: '/pages/update/update'
          });
        }
        // 无论用户选择什么，都标记为已提示
        wx.setStorageSync('updateTipShown', true);
      }
    });
  }
}) 